草庐IT

Python NotImplemented 常量

全部标签

c++ - 在 C++ 中存储非 nul 终止的 C 字符串常量

在任何人说“不要这样做,因为它真的很糟糕”之前。我了解使用NUL终止字符串的原因。我知道有人可以这样说charmystr[]={'m','y','','s','t','r','i','n','g'};However,theconvenienceofthec-stringrepresentationistoogreat.TherationalforthisisthatI'mprogrammingforamicro-controllerandIneedtostoredataintotheprogramme'smemory.Someofthedataisintheformofbytes,wo

c++ - 没有宏的更快的常量字符串附加

所以在组合字符串的时候,往往会有常量成分,例如:std::strings;s+=initial_string;s+="conststring";s+=terminating_string;这只是一个演示,字符串操作可能会更加复杂和深入。因此,在执行const部分时,实现最终“不知道”长度并有效地执行strlen()。在上面。显然这是一种浪费,因为长度在编译时是已知的。我已经测试过,用这个替换const字符串部分要快得多(无论出于何种原因,在x64中都要快得多):s.append("conststring",12);实际统计字符数很烦人,耗时且容易出错,所以这个稍微好一点:s.appen

c++ - 将原始类型的常量引用作为函数参数传递

考虑以下函数:templatevoidMutableQueue::update(constT&item,constPriority&priority){...}如果优先级类型适合寄存器,现代x86-64编译器是否足够智能以通过值而不是引用传递优先级参数? 最佳答案 编译器可能会进行优化,但不是强制性的。要强制通过“最佳”类型,您可以使用boost:http://www.boost.org/doc/libs/1_55_0/libs/utility/call_traits.htm替换constT&(按值传递是正确的)call_trait

c++ - 安全地将(shared_ptr 的 vector 到对象)转换为(shared_ptr 的 vector 到常量对象)

classA{};typedefshared_ptrAConstPtr;typedefshared_ptrAPtr;vectorptr;constvector*foo(){return&ptr;}此代码无法编译,因为“没有从vectorAptr>*到constvectorAConstPtr>*的隐式转换”有没有办法在不创建新vector且不使用不安全强制转换的情况下完成这项工作?我需要这个的原因是因为我有一个类在内部将列表存储为vectorAPtr>,但需要通过其接口(interface)公开它的一个完全const版本。 最佳答案

c++ - 引用初始化和常量表达式

作为thisquestion的后续行动,gcc和clang都认为这个程序格式错误:intmain(){constint&ri=0;constexprinti=ri;}错误是关于ri的值在常量表达式中不可用。0肯定是核心常量表达式,作为纯右值核心常量表达式似乎满足theseconstraints(很简单,因为int不是类、指针或数组类型)。所以ri不应该满足thiscriteria?如果我使用类类型的纯右值文字,情况也是如此:structX{};intmain(){constX&rx=X{};constexprXx=rx;} 最佳答案

c++ - SIMD 常量 float

我一直在尝试使用Microsoft的sseintrinsic优化一些代码。优化我的代码时最大的问题之一是每当我想使用常量时都会发生LHS。似乎有一些关于生成某些常量(here和here-section13.4)的信息,但它是所有程序集(我宁愿避免)。问题是当我尝试用内在函数实现同样的事情时,msvc提示类型不兼容等。有谁知道使用内在函数的任何等效技巧?示例-生成{1.0,1.0,1.0,1.0}//pcmpeqwxmm0,xmm0__m128t=_mm_cmpeq_epi16(t,t);//pslldxmm0,25_mm_slli_epi32(t,25);//psrldxmm0,2re

c++ - 通过引用调用 constexpr 方法 - 结果是常量表达式吗?

下面的代码#includevoidfoo(conststd::array&a){constexprsize_tS=a.size();}intmain(){}在GCC中编译正常,但在clang中编译失败并出现以下错误消息main.cpp:5:28:error:constexprvariable'S'mustbeinitializedbyaconstantexpressionconstexprsize_tS=a.size();^~~~~~~~与此同时,许多关于SO上的constexpr问题的帖子似乎暗示clang通常对constexpr有更好的(更迂腐?)支持。那么,在这种情况下哪个编译器

c++ - 模板化类中的静态常量成员初始化

我有一个关于“staticconst”成员初始化的问题。在模板化类中,我定义了一个const成员并在类外对其进行了初始化。当我在多个.cpp文件中包含实现此类的.h文件时,我收到一个LNK2005错误(我使用的是VS2010),指出常量已定义。//List.hpptemplateclassList{staticconstdoubleTRIM_THRESHOLD;};templateconstdoubleList::TRIM_THRESHOLD=0.8;我尝试将成员初始化放在.cpp文件中,但随后出现链接器错误,指出常量根本未定义。如果列表没有模板化并且我将初始化放在.cpp文件中,一切

c++ - 对指针的常量引用

我遇到了一些使用如下方法的代码:QListitemList;voidaddItem(Item*const&item){itemList.append(item);}现在,我看不出那个和这个之间有任何有意义的区别:QListitemList;voidaddItem(Item*item){itemList.append(item);}但显然有人特意使用了这种奇怪的类型。或者重构工具可能出现了严重错误。是否有充分的理由保留该函数签名?某种行为不同的极端情况?我想不出任何东西。 最佳答案 唯一的区别是,在第一个版本中,您不允许在函数内更改局

c++ - 在引用 (T&) 和常量指针 (T* const) 之间进行选择

是否有任何合理的用例,其中应该使用const指针指向引用?Tobj;T&r=obj;//style-1T*constp=&obj;//style-2这两种样式可以用于相同的目的。我总是喜欢代码中的第一种样式,并将后一种样式视为已弃用。但是我仍然想知道是否错过了第二种风格更好的用例?编辑:不局限于上面的例子,我讲的是广义的,voidfoo(T&r);//style-1voidfoo(T*constp);//style-2[我从几个答案中看出,style-2允许传递null。] 最佳答案 const指针(T*const)可以是NULL,